Virtual sensor in a virtual environment

ABSTRACT

A system for generating haptic effects includes a virtual environment having environmental properties, virtual objects, and object property information. A programmatic virtual sensor is placed on a virtual object in the virtual environment. A rendering engine for the virtual environment renders the virtual environment. A module for the virtual sensor receives virtual sensor data including position and time for the sensor and calculates sensor output data including acceleration data and object interaction data for the virtual sensor. A haptic track generator generates a haptic track based on the sensor output data.

FIELD

One embodiment is directed to a virtual sensor. More particularly, oneembodiment is directed to a virtual sensor for haptics generation in avirtual environment.

BACKGROUND INFORMATION

Sensor haptics can be used to quickly and realistically generate hapticeffects. For example, sensors can be added to real-world objects andgather data about the physics of how the objects interact in theirenvironment. Sensor data can be used to author haptic effects toaccompany filmed or authored environments that have similar interactionsas those captured with sensor data.

A haptic designer may develop haptic information for playback on one ormore haptic output devices based on sensor data. In authoredenvironments, like a three dimensional (“3D”) animated movie or show or3D-scape game, a haptic designer can incorporate sensor data indeveloping haptic effects. Haptic effects can be determined using sensordata along with the haptic designer's expertise and experience. Thehaptic designer can create a haptic track, which when played on a hapticoutput device will produce haptic effects.

SUMMARY

One embodiment is a system for generating haptic effects in a virtualenvironment with environmental properties, virtual objects, and objectproperty information. A programmatic virtual sensor is placed on avirtual object in the virtual environment. A rendering engine for thevirtual environment renders the virtual environment. A module for thevirtual sensor receives virtual sensor data including position and timefor the sensor and calculates sensor output data including accelerationdata and object interaction data for the virtual sensor. A haptic trackgenerator generates a haptic track based on the sensor output data.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a computer server/system in accordance withan embodiment.

FIG. 2 is a flow diagram for a system of using virtual sensors togenerate haptic effects in accordance with one embodiment.

FIG. 3 is a flow diagram for a system of using virtual objectinformation to generate haptic effects in a virtual environment inaccordance with one embodiment.

FIG. 4 is a flow diagram for a system of using virtual objectinformation or sensors to generate haptic effects in a virtualenvironment in accordance with one embodiment.

FIG. 5 is a flow diagram for a system of using virtual objectinformation or sensors to generate haptic effects in a virtualenvironment in accordance with one embodiment.

FIG. 6 is a flow diagram for a system of using virtual objectinformation or sensors and existing haptic effect information to modifyexisting haptic effects in a virtual environment in accordance with oneembodiment.

FIG. 7 is an illustration of two objects colliding in a virtualenvironment in accordance with one embodiment.

DETAILED DESCRIPTION

Embodiments allow a designer to place one or more virtual sensors,rather than actual sensors, in an authoring environment. These virtualsensors can gather data within the environment and, using the gathereddata, generate a haptic track for playback on a haptic device or forfurther editing. In some embodiments, an existing haptic effects trackcan be modified to provide enhanced haptic playback information.

Automatic haptic effect generation at the level of a physics engineusing virtual sensors in a video game or other virtual environment canprovide another layer of complexity of haptic effects that are alteredby a spatialization engine. In addition, virtual sensors can generateentirely new haptic effects on-the-fly in real time renderedenvironments (or run time) or for later playback in produced renderedenvironments. Embodiments further include applications that run computersimulations of objects and environments. Other uses also include movieanimation, such as in a 3D animated feature film. Because every actionin an animated movie must be designed within an authoring tool orframework, simulating sensors to detect collisions or physics inaccordance with embodiments enables the auto generation of a haptictrack to reduce or remove the need to author one.

FIG. 1 is a block diagram of a computer server/system 10 in accordancewith an embodiment. Although shown as a single system, the functionalityof system 10 can be implemented as a distributed system. System 10includes a bus 12 or other communication mechanism for communicatinginformation, and a processor 22 coupled to bus 12 for processinginformation. Processor 22 may be any type of general or specific purposeprocessor. System 10 further includes a memory 14 for storinginformation and instructions to be executed by processor 22. Memory 14can be comprised of any combination of random access memory (“RAM”),read only memory (“ROM”), static storage such as a magnetic or opticaldisk, or any other type of computer readable media. System 10 furtherincludes a communication device 20, such as a network interface card, toprovide access to a network. Therefore, a user may interface with system10 directly, or remotely through a network or any other known method.

Computer readable media may be any available media that can be accessedby processor 22 and includes both volatile and nonvolatile media,removable and non-removable media, and communication media.Communication media may include computer readable instructions, datastructures, program modules or other data in a modulated data signalsuch as a carrier wave or other transport mechanism and includes anyinformation delivery media.

Processor 22 is further coupled via bus 12 to a display 24, such as aLiquid Crystal Display (“LCD”). A keyboard 26 and a cursor controldevice 28, such as a computer mouse, are further coupled to bus 12 toenable a user to interface with system 10.

In one embodiment, memory 14 stores software modules that providefunctionality when executed by processor 22. The modules include anoperating system 15 that provides operating system functionality forsystem 10. The modules further include a virtual sensor control 16 thatprovides and processes data from a virtual sensor 19, as disclosed inmore detail below. System 10 can be part of a larger system, such as ahaptic output system, haptic playback system, or haptic creation system.Therefore, system 10 will typically include one or more additionalfunctional modules 18 to include the additional functionality. Adatabase 17 is coupled to bus 12 to provide centralized storage formodules 16 and 18 and store one or more data sets to support contextualdata processing, etc. Some embodiments may not include all of theelements in FIG. 1.

A haptic output system (not pictured) can include actuators or otherhaptic output devices for outputting haptic effects. An actuator forexample can be any type motor, including without limitation an EccentricRotating Mass (“ERM”), a Linear Resonant Actuator vibration motor(“LRA”), a piezoelectric motor, or a solenoid actuator. Other types ofhaptic output devices may be non-mechanical or non-vibratory devicessuch as devices that use electrostatic friction (“ESF”), ultrasonicsurface friction (“USF”), devices that induce acoustic radiationpressure with an ultrasonic haptic transducer, devices that use a hapticsubstrate and a flexible or deformable surface or shape changing devicesand that may be attached to a user's body, devices that provideprojected haptic output such as a puff of air using an air jet, devicesthat provide electrical muscle stimulation, etc.

Haptic output devices can be contained in a hand held device such as aphone, tablet, or controller; a wearable device, such as a strap, glove,or clothing article; or directly attached to a user's skin through anadhesive or mechanical device. The haptic output system can decide whathaptic effects are to be played and the order in which the effects areplayed based on high level parameters. In general, the high levelparameters that define a particular haptic effect include magnitude,frequency, and duration. Low level parameters such as streaming motorcommands could also be used to determine a particular haptic effect. Ahaptic effect may be considered “dynamic” if it includes some variationof these parameters when the haptic effect is generated or a variationof these parameters based on a user's interaction.

FIG. 2 is a flow diagram for a system of using virtual sensors togenerate haptic effects in accordance with one embodiment. In oneembodiment, the functionality of the flow diagram of FIG. 2 (and FIGS.3-5 below) is implemented by software stored in memory or other computerreadable or tangible medium, and executed by a processor. In otherembodiments, the functionality may be performed by hardware (e.g.,through the use of an application specific integrated circuit (“ASIC”),a programmable gate array (“PGA”), a field programmable gate array(“FPGA”), etc.), or any combination of hardware and software.

At 205, a virtual sensor, such as virtual sensor 19, is placed in avirtual environment. The virtual environment can be, for example, a twodimensional (“2D”) or 3D video game engine, a video authoring program, a3D modeling environment or workspace, a virtual reality environment, andthe like. Virtual sensor 19 can be placed on an object in the virtualenvironment. The virtual sensor can be a special object within anauthoring framework based on a plugin. It can be placed by dragging anddropping the sensor to the object or location on which it will beplaced. As the object in the environment moves, the virtual sensor willalso move, maintaining a fixed position relative to the object on whichit is placed. In some embodiments virtual sensor 19 can be visible in anauthoring software environment and invisible in a rendered softwareenvironment.

At 210, the virtual environment can be rendered. Depending on the typeof environment, the rendering can be done in real time, such as with avideo game with characters being controlled by controllers, or can beproduced such as with a movie with computer generated interactivegraphics. As the virtual environment is rendered, virtual sensor 19 willmove about the environment either according to a script or according toinput from a controller. The object on which virtual sensor 19 is placedcan contact other virtual objects, such as characters, walls, floors,and so forth, during rendering.

At 215, virtual sensor data is collected. Data can include positionaldata (such as location data on three axes), other object data(especially object data from objects that come within a certainproximity of the virtual sensor), time data (fourth axis), andenvironmental data such as gravity, temperature, and so forth. From thisdata, haptic effects can be generated. At 220, haptic effects aregenerated. For example, if the virtual sensor, such as virtual sensor19, is moving in a direction over a period of time, then over a shortperiod of time change direction or stop, this can be calculated as asharp deceleration qualifying for a particular type of haptic effect.

In some embodiments, the virtual sensor, such as virtual sensor 19, canhave associated with it particular haptic effects. For example, adeveloper can place a virtual sensor at a point that will produce arumble haptic effect and another virtual sensor at the same point (or adifferent point) that will produce a poke haptic effect, and so forth.

As part of the generation of haptic effects at 220, the virtual sensormodule 16 can use other information available in the environment totailor haptic effects more specifically. For example, in a virtualenvironment where the gravity property has been set to be one thirdEarth gravity, a haptic effect can be less intense when the sensordetects a change in a downward motion, since the gravitationalacceleration force is less in that environment as compared to anenvironment with Earth gravity. As another example of the type ofinformation available in the environment, a floor can have a property ofbeing rough, and a sensor that moves in close proximity to the floor canbe determined to be “rubbing” on the floor, causing and an appropriatehaptic effect to be produced to more realistically emulate a sensationof rubbing against a rough surface.

FIG. 3 is a flow diagram for a system of using virtual objectinformation to generate haptic effects in a virtual environment inaccordance with one embodiment. In addition to the virtual sensor suchas virtual sensor 19, an object in a virtual environment can be targetedto become similar to a large virtual sensor, with sensing being enabledacross the entire object. The virtual environment can be 2D or 3D andrendered real time or produced.

At 305, global haptic preferences for the scene of the virtualenvironment can be set. These can include those environmental propertiesas discussed above, such as gravity, humidity, in-air versus in-water,and so forth. The properties can be input into the authoring environmentvia a haptic plugin module in the software. At 310, a model or object inthe virtual environment can be selected. At 315, haptic generation canbe enabled in the parameters for the object selected in 310. Otherparameters in an object can include any type of physical property suchas weight, density, material (which could be based on a preset), etc. At320, the objects or parameters of interaction can be specified. Forexample, the parameters of interaction can include edge monitoring of anobject so that when the edge of the object comes in contact with theedge of another object, a haptic effect is generated. The parameters canfurther specify how the intensity of the haptic effect can varydepending on the perceived or calculated intensity of the contactbetween the two objects.

At 325, an output haptic track can be identified that specifies where tosave or play the haptic effect when the scene is rendered. For example,the haptic track can correspond to a haptic output device if therendering is done in real time as in a video game, or the haptic trackcan be a saved format for playing back haptic information on hapticoutput devices if the rendering produces a video file.

At 330, haptic effect priority in the scene can be specified. Forexample, certain types of haptic effects can have preference in thescene. A rumble may have a lower priority than a press sensation, sothat if an edge of the object contacts another object, a press can befelt distinctly over an accompanying rumble. In another example, hapticeffects that could be generated from substantially constant contact witha floor object or the like may receive lower priority since a constanthaptic effect from such contact may diminish the effects generatedrelated to other contact in the scene. In embodiments utilizing avirtual sensor, such as virtual sensor 19, where multiple sensors areused, each of the sensors can have a different priority assigned so thatsensors with less priority can generate less haptic effects or thehaptic effects generated based on the virtual sensor data can beattenuated.

At 335, the scene is rendered. Rendering can be a production effort,such as with a movie or television show where rendering occurs and issaved to a video file, or rendering can be from a real time renderingengine, such as with a video game where rendering is output directly toa video display.

At 340, haptic effects are generated based on the priorities andpreferences discussed in the preceding flow. This is where objects aredetected and tracked through the scene. Objects edges (or wireframe edgepoints if appropriate) can be tracked through the scene. A haptic effectcan be generated based on the tracking and movement of objects throughthe scene. For example, one algorithm may track a wireframe edge on afirst object and a wireframe edge on a second object. The algorithm canthen note that the first and second object edges come withinapproximately the same point in an X-Y-Z axes. The algorithm can thennote that while within the same proximity, the first object edge rapidlyaccelerates away from the second object edge. The algorithm candetermine that a haptic effect should be generated for the motion. Oneof skill in the art can develop algorithms for generating differenthaptic effects based on the acceleration and deceleration of objects (orvirtual sensors), the proximity of the objects (or virtual sensors) toother objects, and environmental factors. Just like a sensor in thereal-world analogue, the algorithm will be largely based on accelerationand position in the scene. One example of how this can work is discussedin greater detail below.

At 345, the generated haptics are output to the specified tracks. Hapticeffects can be played on haptic output devices or saved to a hapticplayback file. Haptic effects generated to specific haptic outputdevices can also be saved to a file as appropriate.

One example of how the flows of FIGS. 2 and 3 can be used in a virtualenvironment is with a virtual rubber ball object in the environment. Therubber ball can have associated with it a set of haptic properties thatrepresent how the ball would feel, such as bounciness, texture, grip,give, etc., and act in standard gravity, such as properties related toweight, mass, volume, density, acceleration, etc. Likewise, a virtualwall in the same environment can have another set of haptic propertiesthat represent how the wall would feel and act in standard gravity, suchas texture, hardness, orientation, etc. Haptic effects can be generatedbased on a collision of the ball with the wall. Gravity can then bechanged and haptic effects also changed based on the change inenvironmental properties (i.e., gravity) and whatever resulting changein the movement (if any) of the ball to the wall.

In another example of how the flows of FIGS. 2 and 3 can be used in avirtual environment, a game controller can include a rifle controllerfor game play in a first person shooter type game. A virtual sensor canbe placed in the game on the butt, grip, and trigger of the gun and/orthe respective shoulder, hand, and finger of the character or avatar.The physics of shooting the gun in the game, such as the kick when thegun is fired, can be captured by the virtual sensors located on the gunand character. Haptic effects can be generated that are sent to hapticoutput devices located on the controller at the butt, grip, and triggerto give the user haptic feedback without the need to specifically authorthe haptic effects.

FIG. 4 is a flow diagram for a system of using virtual objectinformation or sensors to generate haptic effects in a virtualenvironment in accordance with one embodiment. At 405 the environmentcan be generated or created. This can be a 3D game engine, 3Dmodeling/animation platform, 2D game engine, or any other platform wherevirtual objects are interacting with other virtual objects. At 410,environment properties and parameters can be set. These can includeproperties analogous to the real world, such as physics, dimensionality,gravity, radiation/emanation, etc.

At 415, virtual objects can be created or generated in the virtualenvironment. At 420, the virtual objects can have object properties andparameters assigned, including properties analogous to the real world,such as weight, bounciness, mass, size, radiation/emanation, etc.

At 425, the environment can be run or rendered including virtualobjects. The virtual objects and environments are aware of objectinteraction, such as collision detection, speed, motion, direction,orientation, and perspective. In embodiments using virtual sensors, suchas virtual sensor 19, the sensors can serve as proxies for the actualobjects or specific points of interest relative to an object. At 430, aspart of the rendering or running process for the objects andenvironment, settings related to rendering or running the environmentand objects can be used. Settings can include properties such as framerate, resolution, numbers of triangles in objects, and so forth.

At 435, a haptic engine can be used to generate appropriate hapticeffects based on the actions in the rendered or run environment. Theengine can be driven by one or more algorithms based on style or otheroptions. For example, as part of the settings, the perspective of thescene, e.g., that of a viewer/player or another camera angle, can be setwhich can alter the types of effect generated. Other options may includea targeted haptic platform and an optional haptic effect prioritizationengine or mixer.

At 440, haptic effects can be generated by the haptic engine of 435,based on object or environmental properties. For example, uponrendering, the generation of haptics can be determined by the camera ofthe scene and the number of and priority of elements specified to printin the mix of haptic effects. In some embodiments, haptic effects can berendered or previewed while rendering. At 445, the haptic effects can beoutput to editable or playable formats. Generation and output can bedone at run time, such as during game play, animation playback, or oncollision detection to a device capable of rendering the generatedhaptic effects, such as a haptic output device. Generation and outputcan be saved into a file storing a haptic track, similar to an audiostem file that isolates specific audio elements to one track.

One example where the flow of FIG. 4 can be used is in a virtual gameenvironment where specific haptic effects can be pre-authored, butenvironmental effects dynamically generated in the game as if everyobject were fitted with multiple virtual sensors. Haptic effects can begenerated and prioritized by a prioritization engine to determine if thegenerated haptic effect would play or if it would be supplanted byanother effect. Haptic effects can be procedurally generated based onthe action of the objects in the environment (e.g., determining surfacestrength, give, or texture and position relative to time(velocity/acceleration)) and properties of the world (e.g., gravity,relative perspective of the player, etc.).

Another example where the flow of FIG. 4 can be used is in the automaticgeneration of haptic effects during the creation of machinima (i.e., 3Danimations that use a game engine for creating and rendering theactions).

Another example where the flow of FIG. 4 can be used is as part of acontent creation tool used to create complex 3D animations (such asthose employed by Pixar™ for their movies and shorts). Parameters, suchas collision detection, could be set up globally to be written tospecific tracks, either in the form of an audio file or in the form of ahaptic file. Alternatively, individual objects can be enabled toemit/generate specific haptic effects such as: a character's foot/shoebeing enabled to generate an effect based on a collision with anotherobject (such as snow on the ground). The snow can have haptic propertiesthat can be modified by the speed, angle, and size of the character'simpact. Another haptic property could be a value to determine thepriority/importance of the effect to be generated, as well as a settingto determine what file the haptic track can be written to. Uponrendering of the animation, the generation of haptic effects can befurther determined by the camera angle of the scene and the number ofand priority of elements specified to include in the haptic effectgeneration. In some embodiments, multiple haptic tracks can be output,depending on the environment and camera angles. The tracks can be basedon the virtual camera used in the environment to enable a film editorediting raw footage, to include appropriate haptic content on renderingthe final cut.

FIG. 5 is a flow diagram for a system of using virtual objectinformation or sensors to generate haptic effects in a virtualenvironment in accordance with one embodiment. The flow of FIG. 5includes additional details on how a virtual interaction between virtualobjects can be modeled for the purpose of generating haptic effects. At505, properties of a virtual object are determined. Object propertiescan include things like mass, weight, material, acceleration, density,texture, etc.

At 510, properties of secondary, tertiary, etc. object(s) are determinedalong with global or environmental properties. Global or environmentalproperties can include things such as gravity, lightsource(s)/intensity, atmospheric conditions, default values for objects,and so forth.

At 515, based on object and environmental properties, simulate physicsof objects in environment. Collision detection, for example, candetermine the interaction of objects in the virtual space when they comein contact with each other. It should be noted that physics engines andcollision detection algorithms are established technologies in gamingand computer generated graphics. However, the physics of the individualobjects as they collide can determine an appropriate haptic response.For example, if one of the objects is a device with a rubber-likematerial, just as in real life, the rubber would absorb impact andlessen a haptic response. Described in physics terms, the rubber acts todecrease the absolute value of the acceleration of the object, which inturn decreases the force of the collision. Compared to an impact with ahard object, such as a bowling ball, the force of the collision would begreater, even for objects of the same mass because the absolute value ofthe acceleration (or the speed at which the ball slows a stop) would beless.

At 520, numerical values for the physical interactions of the objectscan be determined, such as values for an impact(s)' strength, frequency,attack, and decay. For example, force equals mass times acceleration(F=ma). Thus, a numerical value for strength can be derived fromcollision data. Similarly, a frequency numerical value can be derivedfrom collision data. Attack and decay can be derived from collision dataand physical properties of objects, such as force per area of impact. Asan example of how numerical values can be derived, a high force valuewould lead to a high impact strength. A high frequency of impact, suchas two object sliding along each other creating essentially many impactsquickly, or a low frequency of impact, such as a ball bouncing up anddown, can affect whether the determined haptic effect would be targetedon a high or low frequency haptic output device (such as a LRA or piezoactuator for high frequency effects or an ERM for low frequencyeffects).

At 525, numerical values are mapped to haptic effect generation based onrender settings. Render settings can include real-time renderingsettings such as in a game or settings associated with a productionbased rendering. Settings can also include a desired output type and/oravailable or targeted haptic output devices. For example, a hapticeffect can include consideration for a targeted type of haptic outputdevice or, if the targeted haptically-enabled device is known (thebrand/model of a user's smartphone or gaming system), a tailored hapticeffect/track can be created. In some embodiments, multiple haptic trackscan include information in each track specific to a type ofhaptically-enabled device.

Mapping of numerical values to haptic effects can depend on availablehaptic output devices, and can model collision impacts. For example,having calculated numerical values for a rubber ball hitting a hand, thenumerical values can be mapped to a haptic effect. The haptic effectcould include a magnitude, frequency, duration, and rate of decay forone or more haptic output devices.

At 530, a haptic signal can be output or rendered based on the hapticeffect generated and parameters (e.g., outputting in real-time, writingto a haptic output track, etc.). At 535, if applicable, prioritizationoptions can be applied to available haptic effects (or prioritizationinformation included in the haptic tracks) on playback of the hapticeffects. For example, in some embodiments, the haptic effects can bealtered based on the camera angle or other environmental factors.

FIG. 6 is a flow diagram for a system of using virtual objectinformation or sensors and existing haptic effect information to modifyexisting haptic effects in a virtual environment in accordance with oneembodiment. As part of the haptic effect creation, an existing authoredhaptic effect can be altered. One reason why a developer might alter anauthored haptic effect is to make the haptic effect more realistic.Other reasons can be because the targeted haptic output device ischanged, the perspective of the animation is changed, the physicalproperties of the world are changed, and so forth. The flow of FIG. 6can be performed on haptic effects generated by the flows of any ofFIGS. 2-5.

At 605, a first haptic effect is read. The first haptic effect can beone that is authored or previously automatically generated by engineparameters or derived from an audio track. At 610, virtual sensor data(or virtual object data) is collected, such as in flow elements 215 ofFIG. 2, 335 of FIG. 3, 435 of FIGS. 4, and 515-525 of FIG. 5. Virtualsensor data can be based on location on an actor/object, motion ofactor/object, properties of the environment (such as gravity,alternative haptic emitters, etc.), and the like.

At 615, the first haptic effect is modified based on sensor data tocreate a second haptic effect. The modification can be a modulation ofthe first haptic effect, such as, based on sensor data from a virtualaccelerometer, pitch shifting the frequency of the original effect.Another modification can be a collision detection sensor to alter thestrength of the effect when appropriate. Modification of the firsthaptic effect can be based on a library of real-world sensor basedhaptic effect information. In some embodiments, the second haptic effectcan be output to replace the first haptic effect, and in someembodiments, the second haptic effect can be output as a separate haptictrack to provide multiple available haptic effects tracks that can beselected depending on changes to the environment or camera angles. Oneof skill will understand, of course, that a third haptic effect can becreated by modifying the first or second haptic effects, and so forth.At 620, the second effect is output and/or played (similar to theoutputting of a haptic track as described above).

FIG. 7 is an illustration of two objects colliding in a virtualenvironment in accordance with one embodiment. A virtual environment 700comprises a first object 705 and a second object 710. A virtual sensor715 is located on second object 710. Other possible locations for thesensor include the locations 720 on the object, amongst others. Object710 moves downward toward object 705, colliding with object 705. Virtualsensor 715 gathers data about the collision, including data such as(de)acceleration, collision intensity, surface friction between objects705 and 710, and positional data of the two objects as time proceedsforward from the point of collision. Based on the sensor data, hapticeffects can be generated in accordance with the embodiments herein. Ifsensor 715 had been placed at another location 720, then the hapticeffects generated would be different.

As disclosed, embodiments incorporate virtual sensor or virtual objecttracking in a virtual environment to gather data about the objects (orsensors) in the environment and rendering or run time. Based on thesensor data and properties of the environment and the objects, hapticeffects are generated to provide an interactive atmosphere for a user.

Several embodiments are specifically illustrated and/or describedherein. However, it will be appreciated that modifications andvariations of the disclosed embodiments are covered by the aboveteachings and within the purview of the appended claims withoutdeparting from the spirit and intended scope of the invention.

What is claimed is:
 1. A system for generating haptic effects comprising: a virtual environment including virtual objects; at least one programmatic virtual sensor placed on at least one virtual object in the virtual environment; a rendering engine configured to render the virtual environment; a virtual sensor module configured to receive virtual sensor data from the at least one virtual sensor and to calculate sensor output data based on the virtual sensor data; a haptic track generator configured to generate a haptic track based on the sensor output data.
 2. The system of claim 1, wherein the virtual sensor data includes at least position and time data and the calculated sensor output data includes at least acceleration data of the virtual sensor.
 3. The system of claim 1, wherein the haptic track generator is further configured to modify the haptic track based on the sensor output data.
 4. The system of claim 1, further comprising a prioritization module configured to receive priority information for available haptic effects and for available virtual sensors.
 5. The system of claim 1, wherein the haptic track generator is further configured to receive a track destination for the haptic track.
 6. A method of generating haptic effects comprising: placing at least one programmatic virtual sensor placed on at least one virtual object in a virtual environment; rendering the virtual environment via a rendering engine; receiving virtual sensor data from the at least one virtual sensor; calculating sensor output data based on the virtual sensor data; and generating a haptic track based on the sensor output data.
 7. The method of claim 6, wherein the virtual sensor data includes at least position and time data and the calculated sensor output data includes at least acceleration data of the virtual sensor.
 8. The method of claim 6, wherein the generating modifies the haptic track based on the sensor output data.
 9. The method of 6, further comprising: receiving priority information for available haptic effects and for available virtual sensors.
 10. The method of claim 6, further comprising: receiving a track destination for generating the haptic track.
 11. A system for generating haptic effects comprising: a virtual environment including virtual objects; a collision detection engine configured to collect collision information for at least one collision between two virtual objects; a rendering engine configured to render the virtual environment; a physics engine configured to analyze collision information and determine numerical values for physical properties of the collision; a haptic effect mapper configured to map the numerical values to haptic effects; and a haptic track generator configured to generate a haptic track based on mapped haptic effects.
 12. The system of claim 11, wherein the physical properties include object speed and acceleration data at a particular time.
 13. The system of claim 11, wherein the haptic track generator is further configured to modify the haptic track based on the numerical values.
 14. The system of claim 11, further comprising a prioritization module configured to receive priority information for mapped haptic effects.
 15. The system of claim 11, wherein the haptic track generator is further configured to receive a track destination for the haptic track.
 16. A method for generating haptic effects comprising: collecting collision information for at least one collision between two virtual objects in a virtual environment; rendering the virtual environment; calculating numerical values for physical properties of the collision based on the collision information; mapping the numerical values to haptic effects; and generating a haptic track based on mapped haptic effects.
 17. The method of claim 16, wherein the physical properties include object speed and acceleration data at a particular time.
 18. The method of claim 16, wherein the generating modifies the haptic track based on the numerical data.
 19. The method of 16, further comprising: receiving priority information for mapped haptic effects.
 20. The method of claim 16, further comprising: receiving a track destination for generating the haptic track. 